#include<vector>
#include<iostream>
class Opol{
private:
    std::vector<int> a;
public:
    explicit Opol(std::vector<int> a);
    Opol operator+(const Opol& a) const;      // 运算符重载，实现两个数组各个位置相加
    friend Opol operator+(std::vector<int> a,const Opol& b);    // 友元函数，实现向量和运算的相加,友元函数可以访问私有成员
    friend std::ostream& operator<<(std::ostream &os,const Opol& b);    // 实现输出的运算符重载
    // 对于类型转换的重载，将对象转换为int类型
    explicit operator int() const;    // explicit强调是一个显式的转换，不需要返回类型
    Opol& operator++();        // ++在前
    Opol operator++(int);      // ++在后
    std::vector<int> getA() const;
};
// 运算符重载：T1 = T2 + T3
// member function: T1 = T1.operator+(T3)
// friend function: T1 = operator+(T2,T3)
// 在c++中，=，->，[]，()不能重载为友元函数